"""
@author: zjc
@file: lianxi.py
@time: 2022/11/25 11:36
"""

# 1.输入数字n，输出n天前的日期（time或者datatime模块）
# import time
# import datetime
# N=input("请输入想要获取到时间:")
# if N.isdigit():
#     # 先获得时间数组格式的日期
#     DayAgo = (datetime.datetime.today() - datetime.timedelta(days=int(N)))
#     # 转换为其他字符串格式
#     day = DayAgo.strftime("%Y-%m-%d ")
#     print(day)
# else:
#     print("输入的格式有误!")

#2、输出指定文件夹下有哪些文件或文件夹（实现ls命令， os）
# import os
# def ls(path, depth=0):
#     if depth == 0:
#         print(path)
#     items = os.listdir(path)
#     for item in items:
#         # 输出文件夹中的文件和子文件夹名
#         print('|    ' * depth, end='')
#         print('|----', item)
# ls(r'E:/python代码/2022-11-24/01.模块导入')

#3、列表去重，并且从小到大排序
# lst=[6,5,5,4,1,1,2,3,4]
# lst.sort()
# s=set(lst)
# print(list(s))

#4、如何在一个函数内部修改全局变量
# a=1
# b=2
# def add(a,b):
#     global a
#     a=2
#     print(a+b)
# add(a,b)

#5、如何跨模块共享全局变量
# 把全局变量都写在一个模块文件中，使用的时候导入即可

#6、python的基本数据类型有哪些？
#   整数、浮点数、复数、字符串、布尔、NoneType、列表、元组、字典、集合

#7、python中生成随机整数（1-10），随机小数（1-10），随机小数（0-1）的方法
# import random
# print(random.randint(1,10))
# print(random.uniform(1,10))
# print(random.random())

#8、python中哪些是可变数据类型，哪些是不可变数据类型
#列表，字典，集合是可变的
# 元组，整型，字符串，浮点型，布尔型不可变

#9、a+=1与a=a+1有什么区别
# 没有区别

#10、什么是pep8？说出5点它的标准
    # 1.缩进
    # 不要使用 tab 缩进
    # 使用任何编辑器写 Python，请把一个 tab 展开为 4 个空格
    # 绝对不要混用 tab 和空格，否则容易出现 IndentationError
    #2.空格
    # 在 list, dict, tuple, set, 参数列表的 , 后面加一个空格
    # 在 dict 的 : 后面加一个空格
    # 在注释符号 # 后面加一个空格，但是 #!/usr/bin/python 的 # 后不能有空格
    # 操作符两端加一个空格，如 +, -, *, /, |, &, =
    # 接上一条，在参数列表里的 = 两端不需要空格
    # 括号（(), {}, []）内的两端不需要空格

    #3.空行
    # function 和 class 顶上两个空行
    # class 的 method 之间一个空行
    # 函数内逻辑无关的段落之间空一行，不要过度使用空行
    # 不要把多个语句写在一行，然后用 ; 隔开
    # if/for/while 语句中，即使执行语句只有一句，也要另起一行

    #4.换行
    # 每一行代码控制在 80 字符以内
    # 使用 \ 或 () 控制换行

    # 5.命名
    # 使用有意义的，英文单词或词组，绝对不要使用汉语拼音
    # package/module 名中不要出现 -

#11、给定一个字符串，找出字符串第一个重复的字符
# str1="faacbdfgfh"
# for i in str1:
#     if str1.count(i)>1:
#         print(i)
#         break

#12、简述深拷贝与浅拷贝
#只有在容器类型里面包含可变数据类型的时候，深浅拷贝会造成不同的影响
#浅拷贝之后的数据改变，可能会影响原来的数据
#深拷贝之后的数据不变，不会影响原来的数据
#浅拷贝只拷贝容器类型里的第一层数据的类型
#深拷贝会拷贝里面的每一层的值

#13、简述python内存机制
#程序在运行之初，对于[-5,256] 这样的小整数，系统已经初始化好，可以直接拿来用。而对于其他的大整数
# ，系统则提前申请了一块内存空间即驻留区，等需要的时候在这上面创建大整数对象。

#14、使用python实现冒泡排序，快速排序
#冒泡排序
# def bubbleSort(arr):
#     for i in range(1, len(arr)):
#         for j in range(0, len(arr)-i):
#             if arr[j] > arr[j+1]:
#                 arr[j], arr[j + 1] = arr[j + 1], arr[j]
#     print(arr)
# lst=[1,5,2,6,7,3]
# bubbleSort(lst)

#快速排序
# def quick_sort(s,i,r):
#     if i<r:
#         j = r
#         x = s[i]
#         while (i < j):
#             while (i < j and s[j] >= x):
#                 j = j - 1
#             if i < j:
#                 s[i] = s[j]
#                 i = i + 1
#             while (i < j and s[i] < x):
#                 i = i + 1
#             if i < j:
#                 s[j] = s[i]
#                 j = j - 1
#         s[i] = x
#         quick_sort(s, 1, i - 1)
#         quick_sort(s, i + 1, r)
#         return s
# lst=[1,5,2,6,7,3,6]
# print("排序后的序列为：")
# for i in quick_sort(lst,0,len(lst)-1):
#     print(i,end=" ")



#15、验证一个字符串是否属于回文（从左到右，从右到左都是一样）
# lst=[]
# str1="abccba"
# for i in range(len(str1)):
#     if str1[i]!=str1[len(str1)-i-1]:
#         lst.append(i)
# if len(lst)>0:
#     print("该字符串不是回文")
# else:
#     print("该字符串是回文")


